#!/usr/bin/env python3
"""
MCP WebSocket服务器启动脚本

启动MCP (Model Context Protocol) WebSocket服务器。

功能：
1. 启动MCP WebSocket服务器
2. 处理MCP协议消息
3. 支持会话管理
4. 提供心跳检测
5. 完整的错误处理

使用方法：
python start_mcp.py

作者: 张朝文
版本: 1.0.0
"""

import asyncio
import signal
import sys
from app.core.logging_config import app_logger

async def start_mcp_server():
    """启动MCP WebSocket服务器"""
    try:
        # 导入MCP服务器
        from mcp_server_simple import SimpleMCPServer
        
        app_logger.info("=" * 60)
        app_logger.info("启动大模型集成对话系统 - MCP WebSocket服务器")
        app_logger.info("=" * 60)
        app_logger.info("服务器地址: ws://localhost:8080/mcp")
        app_logger.info("支持路径: /mcp, /")
        app_logger.info("协议: MCP (Model Context Protocol)")
        app_logger.info("=" * 60)
        
        # 创建并启动MCP服务器
        mcp_server = SimpleMCPServer(host='localhost', port=8080)
        await mcp_server.start_server()
        
    except KeyboardInterrupt:
        app_logger.info("收到中断信号，正在停止MCP服务器...")
    except Exception as e:
        app_logger.error(f"MCP服务器启动失败: {str(e)}")
        sys.exit(1)

def signal_handler(signum, frame):
    """信号处理器"""
    app_logger.info(f"收到信号 {signum}，正在停止MCP服务器...")
    sys.exit(0)

def main():
    """主函数"""
    # 注册信号处理器
    signal.signal(signal.SIGINT, signal_handler)
    signal.signal(signal.SIGTERM, signal_handler)
    
    try:
        asyncio.run(start_mcp_server())
    except KeyboardInterrupt:
        app_logger.info("MCP服务器已停止")
    except Exception as e:
        app_logger.error(f"启动失败: {str(e)}")
        sys.exit(1)

if __name__ == "__main__":
    main()
